package com.sright.bcard.content.share.service;

import com.sright.bcard.common.service.share.dto.content.CardMaterialDetailDTO;
import com.sright.bcard.common.service.share.dto.pager.Pager;
import com.sright.bcard.common.service.share.dto.request.CuFaceCacheRequest;
import com.sright.bcard.common.service.share.dto.request.CardEditRequest;
import com.sright.bcard.common.service.share.dto.request.EnterpriseCardRequest;
import com.sright.bcard.common.service.share.dto.response.CardMaterialResponse;
import com.sright.bcard.common.service.share.dto.response.CuFaceCacheResponse;
import com.sright.bcard.common.service.share.dto.response.EnterpriseCardDetailResponse;
import com.sright.bcard.common.service.share.dto.response.EnterpriseCardResponse;
import com.sright.bcard.common.service.share.dto.content.CardDTO;
import com.sright.bcard.common.service.share.dto.content.CardFullDTO;
import com.sright.bcard.content.share.request.CardParamRequest;
import com.sright.bcard.content.share.request.EnterpriseCardAddParam;
import com.sright.bcard.common.service.share.dto.enterprise.IndustryDTO;
import com.sright.common.response.SrightResponse;

import java.util.List;

/**
 * 名片service
 */
public interface CardService {

    /**
     * 新增个人名片
     * @param industryDTO
     * @return
     */
    SrightResponse<Boolean> addPersonalCard(IndustryDTO industryDTO);

    /**
     * 个人名片详情
     * @param personalUserId
     * @return
     */
    SrightResponse<CardFullDTO> cardPersonalDetail(Long personalUserId);

    /**
     * 获取名片全量信息
     * @param cardDTO
     * @return
     */
    SrightResponse<CardFullDTO> getCardFullDTO(CardDTO cardDTO);

    /**
     * 个人名片编辑 - 中文
     * @param cardParamRequest
     * @return
     */
    SrightResponse<Boolean> cardZh(CardParamRequest cardParamRequest);

    /**
     * 个人名片编辑 - 英文
     * @param cardParamRequest
     * @return
     */
    SrightResponse<Boolean> cardEn(CardParamRequest cardParamRequest);

    /**
     * 添加企业名片
     * @param enterpriseCardAddParam
     * @return
     */
    SrightResponse addCardEnterprise(EnterpriseCardAddParam enterpriseCardAddParam);

    /**
     * 编辑中文企业信息（中文）
     * @param enterpriseCardAddParam
     * @return
     */
    SrightResponse editCardEnterpriseZh(EnterpriseCardAddParam enterpriseCardAddParam);

    /**
     * 编辑企业用户信息（英文）
     * @param enterpriseCardAddParam
     * @return
     */
    SrightResponse editCardEnterpriseEn(EnterpriseCardAddParam enterpriseCardAddParam);

    /**
     * 个人名片编辑文字颜色
     * @param color
     * @param userId
     * @return
     */
    SrightResponse editFontColor(String color,Long userId);

    /**
     * demo名片1
     * @return
     */
    SrightResponse demoCard1();

    /**
     * demo名片2
     * @return
     */
    SrightResponse demoCard2();

    /**
     * demo名片3
     * @return
     */
    SrightResponse demoCard3();

    /**
     * 名片信息详情
     * @param userId
     * @param oldPersonalUserId
     * @param oldEnterpriseUserId
     * @return
     */
    SrightResponse cardInfoDetail(Long userId,Long oldPersonalUserId,Long oldEnterpriseUserId);

    /**
     * 名片素材详情
     * @param cardId
     * @return
     */
    SrightResponse<List<CardMaterialDetailDTO>> cardMaterialDetail(Long cardId);

    /**
     * 添加企业名片
     * @param enterpriseCardRequest
     * @return
     */
    SrightResponse<Long> addEnterpriseCard(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 编辑企业名片
     * @param enterpriseCardRequest
     * @return
     */
    SrightResponse<Boolean> editEnterpriseCard(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 删除企业名片
     * @param enterpriseCardRequest
     * @return
     */
    SrightResponse<Integer> deleteEnterpriseCard(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 企业名片标题重命名
     * @param enterpriseCardRequest
     * @return
     */
    SrightResponse<Boolean> updateEnterpriseCardName(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 分页查询企业名片列表
     * @param enterpriseCardRequest
     * @return
     */
    SrightResponse<Pager<EnterpriseCardResponse>> list(EnterpriseCardRequest enterpriseCardRequest);

    /**
     * 删除用户公司信息
     * @param cardUserCompanyInfoId
     * @param userId
     * @return
     */
    SrightResponse deleteUserCompanyInfo(Long cardUserCompanyInfoId, Long userId);

    /**
     * 编辑名片
     * @param cardEditRequest
     * @param adminId
     * @return
     */
    SrightResponse<Boolean> editCard(CardEditRequest cardEditRequest,Long adminId);

    /**
     * CuFace缓存接口数据
     * @param cuFaceCacheRequest
     * @return
     */
    SrightResponse<CuFaceCacheResponse> cardInfoMaterialDetail(CuFaceCacheRequest cuFaceCacheRequest);

    /**
     * 获取名片素材详情
     * @param cardId
     * @return
     */
    SrightResponse<CardMaterialResponse> cardMaterialDetailNew(Long cardId);

    /**
     * CuFace详情
     * @param enterpriseCardRequest
     * @return
     */
    SrightResponse<EnterpriseCardDetailResponse> enterpriseCardDetail(EnterpriseCardRequest enterpriseCardRequest);

    SrightResponse cardConnectInfo(Long userId, Long oldPersonalUserId, Long oldEnterpriseUserId);
}
